{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "F:\\anaconda\\lib\\site-packages\\h5py\\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
      "  from ._conv import register_converters as _register_converters\n"
     ]
    }
   ],
   "source": [
    "#导入库\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "from matplotlib import pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "tf.logging.set_verbosity(tf.logging.INFO)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From <ipython-input-2-cf26533f7a86>:2: read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
      "WARNING:tensorflow:From F:\\anaconda\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:260: maybe_download (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please write your own downloading logic.\n",
      "WARNING:tensorflow:From F:\\anaconda\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:262: extract_images (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n",
      "Extracting ./train-images-idx3-ubyte.gz\n",
      "WARNING:tensorflow:From F:\\anaconda\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:267: extract_labels (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n",
      "Extracting ./train-labels-idx1-ubyte.gz\n",
      "Extracting ./t10k-images-idx3-ubyte.gz\n",
      "Extracting ./t10k-labels-idx1-ubyte.gz\n",
      "WARNING:tensorflow:From F:\\anaconda\\lib\\site-packages\\tensorflow\\contrib\\learn\\python\\learn\\datasets\\mnist.py:290: DataSet.__init__ (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
      "(55000, 784)\n",
      "(55000,)\n",
      "(5000, 784)\n",
      "(5000,)\n",
      "(10000, 784)\n",
      "(10000,)\n"
     ]
    }
   ],
   "source": [
    "#输入输出数据\n",
    "mnist = input_data.read_data_sets(\"./\")\n",
    "\n",
    "print(mnist.train.images.shape)\n",
    "print(mnist.train.labels.shape)\n",
    "\n",
    "print(mnist.validation.images.shape)\n",
    "print(mnist.validation.labels.shape)\n",
    "\n",
    "print(mnist.test.images.shape)\n",
    "print(mnist.test.labels.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,8))\n",
    "\n",
    "for idx in range(16):\n",
    "    plt.subplot(4,4, idx+1)\n",
    "    plt.axis('off')\n",
    "    plt.title('[{}]'.format(mnist.train.labels[idx]))\n",
    "    plt.imshow(mnist.train.images[idx].reshape((28,28)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = tf.placeholder(\"float\", [None, 784])\n",
    "y = tf.placeholder(\"int64\", [None])\n",
    "learning_rate = tf.placeholder(\"float\")\n",
    "\n",
    "def initialize(shape, stddev=0.1):\n",
    "    return tf.truncated_normal(shape, stddev=0.1)\n",
    "\n",
    "L1_units_count = 100\n",
    "\n",
    "W_1 = tf.Variable(initialize([784, L1_units_count]))\n",
    "b_1 = tf.Variable(initialize([L1_units_count]))\n",
    "logits_1 = tf.matmul(x, W_1) + b_1\n",
    "output_1 = tf.nn.relu(logits_1)\n",
    "\n",
    "L2_units_count = 10 \n",
    "W_2 = tf.Variable(initialize([L1_units_count, L2_units_count]))\n",
    "b_2 = tf.Variable(initialize([L2_units_count]))\n",
    "logits_2 = tf.matmul(output_1, W_2) + b_2  \n",
    "\n",
    "logits = logits_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "cross_entropy_loss = tf.reduce_mean(\n",
    "    tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y))\n",
    "\n",
    "optimizer = tf.train.GradientDescentOptimizer(\n",
    "    learning_rate=learning_rate).minimize(cross_entropy_loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred = tf.nn.softmax(logits)\n",
    "correct_pred = tf.equal(tf.argmax(pred, 1), y)\n",
    "accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 32\n",
    "trainig_step = 2000\n",
    "\n",
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "after 100 training steps, the loss is 0.469889, the validation accuracy is 0.8604\n",
      "after 200 training steps, the loss is 0.850692, the validation accuracy is 0.9108\n",
      "after 300 training steps, the loss is 0.337536, the validation accuracy is 0.9252\n",
      "after 400 training steps, the loss is 0.262852, the validation accuracy is 0.9398\n",
      "after 500 training steps, the loss is 0.142895, the validation accuracy is 0.939\n",
      "after 600 training steps, the loss is 0.122397, the validation accuracy is 0.9456\n",
      "after 700 training steps, the loss is 0.377039, the validation accuracy is 0.9428\n",
      "after 800 training steps, the loss is 0.0987983, the validation accuracy is 0.9496\n",
      "after 900 training steps, the loss is 0.125574, the validation accuracy is 0.9556\n",
      "after 1000 training steps, the loss is 0.0936095, the validation accuracy is 0.946\n",
      "after 1100 training steps, the loss is 0.349417, the validation accuracy is 0.9546\n",
      "after 1200 training steps, the loss is 0.276452, the validation accuracy is 0.9568\n",
      "after 1300 training steps, the loss is 0.108045, the validation accuracy is 0.9578\n",
      "after 1400 training steps, the loss is 0.0717648, the validation accuracy is 0.9604\n",
      "after 1500 training steps, the loss is 0.0598325, the validation accuracy is 0.9552\n",
      "after 1600 training steps, the loss is 0.0281478, the validation accuracy is 0.9608\n",
      "after 1700 training steps, the loss is 0.326971, the validation accuracy is 0.9628\n",
      "after 1800 training steps, the loss is 0.0658777, the validation accuracy is 0.9612\n",
      "after 1900 training steps, the loss is 0.0434755, the validation accuracy is 0.9672\n",
      "the training is finish!\n",
      "the test accuarcy is: 0.9667\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "\n",
    "    #定义验证集与测试集\n",
    "    validate_data = {\n",
    "        x: mnist.validation.images,\n",
    "        y: mnist.validation.labels,\n",
    "    }\n",
    "    test_data = {x: mnist.test.images, y: mnist.test.labels}\n",
    "\n",
    "    for i in range(trainig_step):\n",
    "        xs, ys = mnist.train.next_batch(batch_size)\n",
    "        _, loss = sess.run(\n",
    "            [optimizer, cross_entropy_loss],\n",
    "            feed_dict={\n",
    "                x: xs,\n",
    "                y: ys,\n",
    "                learning_rate: 1\n",
    "            })\n",
    "\n",
    "        #每100次训练打印一次损失值与验证准确率\n",
    "        if i > 0 and i % 100 == 0:\n",
    "            validate_accuracy = sess.run(accuracy, feed_dict=validate_data)\n",
    "            print(\n",
    "                \"after %d training steps, the loss is %g, the validation accuracy is %g\"\n",
    "                % (i, loss, validate_accuracy))\n",
    "            saver.save(sess, './model.ckpt', global_step=i)\n",
    "\n",
    "    print(\"the training is finish!\")\n",
    "    #最终的测试准确率\n",
    "    acc = sess.run(accuracy, feed_dict=test_data)\n",
    "    print(\"the test accuarcy is:\", acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./model.ckpt-1900\n",
      "0.9375\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    ckpt = tf.train.get_checkpoint_state('./')\n",
    "    if ckpt and ckpt.model_checkpoint_path:\n",
    "        saver.restore(sess, ckpt.model_checkpoint_path)\n",
    "        final_pred, acc = sess.run(\n",
    "            [pred, accuracy],\n",
    "            feed_dict={\n",
    "                x: mnist.test.images[:16],\n",
    "                y: mnist.test.labels[:16]\n",
    "            })\n",
    "        orders = np.argsort(final_pred)\n",
    "        plt.figure(figsize=(8, 8))\n",
    "        print(acc)\n",
    "        for idx in range(16):\n",
    "            order = orders[idx, :][-1]\n",
    "            prob = final_pred[idx, :][order]\n",
    "            plt.subplot(4, 4, idx + 1)\n",
    "            plt.axis('off')\n",
    "            plt.title('{}: [{}]-[{:.1f}%]'.format(mnist.test.labels[idx],\n",
    "                                                  order, prob * 100))\n",
    "            plt.imshow(mnist.test.images[idx].reshape((28, 28)))\n",
    "\n",
    "    else:\n",
    "        pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
